W12. Эйлеровы пути и циклы (Eulerian paths/cycles), гамильтоновы пути и циклы (Hamiltonian paths/cycles), алгоритм Флёри (Fleury), алгоритм Дейкстры (Dijkstra)
1. Резюме
1.1 Пути и циклы в графах
В теории графов путь (path) и цикл (cycle) — базовые объекты обхода. Path — последовательность вершин, где соседние пары соединены рёбрами и ребро не повторяется. Cycle — путь, у которого совпадают начало и конец. Интересны дополнительные ограничения: пройти каждое ребро ровно один раз (Euler path) или каждую вершину ровно один раз (Hamilton path).
Эти модели встречаются в маршрутизации, логистике и классических задачах вроде Seven Bridges of Königsberg.
1.2 Эйлеровы пути и циклы
Eulerian path (Euler trail) — путь, проходящий по каждому ребру ровно один раз. Если начало и конец совпадают, получаем Eulerian cycle (Euler tour).
1.2.1 Исторический контекст
История начинается с Эйлера (1736) и задачи о семи мостах Кёнигсберга: можно ли пройти каждый мост ровно один раз. Эйлер смоделировал суши как вершины, мосты как рёбра и доказал невозможность.
1.2.2 Необходимые и достаточные условия
Для Eulerian ситуации известны necessary and sufficient conditions:
- Связный (connected) граф Eulerian (имеет Euler cycle) тогда и только тогда, когда степени всех вершин чётны.
- Связный граф имеет Euler path тогда и только тогда, когда 0 или 2 вершины имеют нечётную степень.
Наглядный смысл доказательства (не «интуиция» в кальке): в Euler tour каждое посещение вершины использует «вход» и «выход», вклад в степень чётный.
Граф с Euler cycle называют Eulerian graph; с Euler path, но без цикла, — semi-Eulerian.
1.3 Алгоритм Флёри
Условия существования дополняет Fleury’s algorithm: на каждом шаге выбираем ребро, которое не является мостом (bridge) в оставшемся графе нетронутых рёбер, если есть альтернатива.
Формально:
- Старт из \(v_0\) (или из вершины нечётной степени для Euler path).
- На шаге выбираем ребро, которое:
- ещё не использовано;
- не разрывает остаточный граф на компоненты (bridge), если возможно.
1.4 Гамильтоновы пути и циклы
Hamiltonian path фокусируется на вершинах: каждая вершина ровно один раз. Замкнув путь, получаем Hamiltonian cycle (Hamilton circuit).
1.4.1 Исторический контекст
Название связано с Гамильтоном и головоломкой Icosian (1857) на додекаэдре: обойти все вершины по рёбрам и вернуться.
1.4.2 Почему это сложнее
Для Hamiltonian графов нет известных простых necessary and sufficient conditions. Задача NP-complete в общей постановке.
Граф с Hamiltonian cycle — Hamiltonian; с Hamiltonian path, но не обязательно с циклом, — semi-Hamiltonian.
1.5 Достаточные условия: Оре и Дирак
Есть sufficient conditions, гарантирующие Hamiltonian cycle:
1.5.1 Теорема Дирака (1952)
Если \(G\) — простой граф на \(n\ge3\) вершинах и \(\deg(v)\ge n/2\) для всех \(v\), то \(G\) Hamiltonian.
Интерпретация: если каждая вершина смежна хотя бы с половиной остальных, в графе обязательно есть Hamiltonian cycle.
1.5.2 Теорема Оре (1960)
Если для любой пары несмежных \(u,v\) выполнено \(\deg(u)+\deg(v)\ge n\), то \(G\) Hamiltonian.
Интерпретация: Ore’s theorem слабее Dirac’s theorem: не требуется большая степень у каждой вершины по отдельности — важно, чтобы несмежные пары вместе имели достаточно инцидентных рёбер.
Теорема Оре обобщает Дирака: из условий Дирака следует условие Оре.
1.6 Алгоритм Дейкстры
Dijkstra’s algorithm ищет shortest path от источника до всех вершин во weighted graph с неотрицательными весами рёбер.
1.6.1 Идея
Поддерживаем текущие кратчайшие tentative distances, итеративно «фиксируем» вершину с минимальной оценкой среди unvisited.
1.6.2 Greedy
Это greedy algorithm: локально берём минимум расстояния среди unvisited, что даёт глобально оптимальные shortest paths при неотрицательных весах.
1.6.3 Восстановление пути
Храним predecessor для каждой вершины при релаксации.
2. Определения
- Path: последовательность вершин, где каждая соседняя пара соединена ребром и ребро не повторяется.
- Cycle: путь, у которого совпадают начало и конец.
- Walk: последовательность вершин с рёбрами между соседями (рёбра могут повторяться).
- Closed walk: замкнутый walk.
- Euler path (Euler trail): путь, проходящий по каждому ребру графа ровно один раз.
- Euler cycle (Euler tour): цикл, проходящий по каждому ребру ровно один раз.
- Eulerian graph: граф, содержащий Euler cycle.
- Semi-Eulerian graph: граф с Euler path, но без Euler cycle.
- Hamilton path: путь, проходящий через каждую вершину ровно один раз.
- Hamilton cycle (Hamilton circuit): цикл, проходящий через каждую вершину ровно один раз.
- Hamiltonian graph: граф, содержащий Hamilton cycle.
- Semi-Hamiltonian graph: граф с Hamilton path, но без Hamilton cycle.
- Degree of a vertex: число инцидентных рёбер.
- Simple graph: без петель и без кратных рёбер между одной парой вершин.
- Connected graph: между любой парой вершин существует путь.
- Bridge: ребро, удаление которого увеличивает число компонент связности.
- Weighted graph: граф с числовыми весами (стоимостями) на рёбрах.
- Shortest path: во взвешенном графе путь с минимальной суммой весов рёбер.
3. Формулы
- Euler cycle condition: нетривиальный связный граф Eulerian \(\Leftrightarrow\) все степени вершин чётны.
- Euler path condition: связный граф имеет Euler path \(\Leftrightarrow\) ровно \(0\) или ровно \(2\) вершины нечётной степени.
- Dirac’s theorem: если \(G\) — простой граф на \(n\ge3\) вершинах и \(\deg(v)\ge n/2\) для всех \(v\), то \(G\) Hamiltonian.
- Ore’s theorem: если \(G\) — простой граф на \(n\ge3\) вершинах и для любой пары несмежных \(u,v\) выполнено \(\deg(u)+\deg(v)\ge n\), то \(G\) Hamiltonian.
- Degree sum formula: \(\sum_{v\in V}\deg(v)=2|E|\).
- Fleury’s algorithm: стартуем из вершины; на каждом шаге выбираем неиспользованное ребро, которое не bridge в оставшемся графе, если есть выбор.
- Dijkstra’s algorithm: для неотрицательных весов: \(d[s]=0\), остальные \(+\infty\); повторяем выбор unvisited с минимальным текущим \(d[\cdot]\), релаксации \(d[v]=\min(d[v],d[u]+w(u,v))\), пометку visited.
4. Примеры
4.1. Разница между Euler и Hamilton (Лаба 10, Задание 1)
В чём разница между Euler path и Hamilton path?
Показать решение
Суть: различается объект обхода.
Euler path: каждое ребро один раз; вершины можно посещать многократно.
Hamilton path: каждая вершина один раз; не все рёбра нужны.
На треугольнике \(K_3\): Euler path использует все 3 ребра; Hamilton path использует 2 ребра и 3 вершины.
Ответ: Euler path проходит по каждому ребру ровно один раз, а Hamilton path — по каждой вершине ровно один раз.
4.2. Домик: Euler и Hamilton (Лаба 10, Задание 2a)
Для графа на рисунке найдите Euler path и Hamilton cycle, если они есть.

Показать решение
!addsolution
4.3. «Ромб» с внутренностью (Лаба 10, Задание 2b)
Для графа «ромб» с внешними \(a,b,c,d\) и внутренними \(e,f,g,h\) найдите Euler path и Hamilton cycle, если существуют.
Показать решение
- Посчитайте степени.
- Проверьте условия Euler path/cycle.
- Для Hamilton cycle попробуйте, например, \(a \to e \to f \to b \to g \to c \to h \to d \to a\), проверяя рёбра.
Ответ: зависит от точной схемы рёбер; при типичной конфигурации часто возможны оба типа обходов.
4.4. Звездообразный пример (Лаба 10, Задание 2c)
Для графа на вершинах \(v_0,\ldots,v_7\) найдите Euler path и Hamilton cycle, если существуют.
Показать решение
Разбор:
- Степени вершин: проверьте связи между \(v_0\) (слева), \(v_1\) (сверху), \(v_2\) (справа), \(v_3\) (снизу) и внутренними \(v_4,v_5,v_6,v_7\).
- Эйлеровость: посчитайте вершины нечётной степени и примените критерии Euler path / Euler cycle.
- Гамильтонов цикл: попробуйте построить цикл по всем 8 вершинам, например \(v_0 \to v_1 \to v_2 \to v_3 \to v_4 \to v_5 \to v_6 \to v_7 \to v_0\), и проверьте наличие каждого ребра.
4.5. Когда \(K_n\) эйлеров (Лаба 10, Задание 3a)
Для каких \(n\) граф \(K_n\) Eulerian?
Показать решение
Суть: в \(K_n\) степень каждой вершины \(n-1\).
Нужна чётность \(n-1\), то есть нечётное \(n\) (и \(n\ge3\) для содержательного случая).
Ответ: \(K_n\) Eulerian \(\Leftrightarrow\) \(n\) нечётно, \(n\ge3\).
4.6. Когда \(K_n\) гамильтонов (Лаба 10, Задание 3b)
Для каких \(n\) граф \(K_n\) Hamiltonian?
Показать решение
Суть: в полном графе можно идти в любом порядке по вершинам.
Ответ: для всех \(n\ge3\).
4.7. Когда \(K_{n,m}\) эйлеров (Лаба 10, Задание 4a)
Для каких \(n,m\) граф \(K_{n,m}\) Eulerian?
Показать решение
Степени в долях равны \(m\) и \(n\) соответственно. Нужны чётные \(n\) и \(m\), а также \(n,m\ge1\) для связности.
Ответ: оба параметра чётные и положительные.
4.8. Когда \(K_{n,m}\) гамильтонов (Лаба 10, Задание 4b)
Для каких \(n,m\) граф \(K_{n,m}\) Hamiltonian?
Показать решение
Суть: цикл должен чередовать доли, значит \(|L|=|R|\) и в каждой доле хотя бы 2 вершины.
Ответ: \(n=m\ge2\).
4.9. Ни эйлеров, ни гамильтонов (Лаба 10, Задание 5a)
Постройте связный \(G_1\), который не Eulerian и не Hamiltonian. Обоснуйте.
Показать решение
Конструкция:
Граф с cut vertex (articulation point), который «режет» структуру так, что Hamilton cycle невозможен:
- «Гантеля» / dumbbell: два треугольника и одно мостовое ребро между ними;
- вершины: \(\{a,b,c,d,e,f,g\}\);
- рёбра: треугольник 1: \((a,b),(b,c),(c,a)\); мост: \((c,d)\); треугольник 2: \((d,e),(e,f),(f,d)\).
Почему не Eulerian:
- у \(c\) и \(d\) степень \(3\) (нечётная);
- если нечётных вершин больше двух, Euler path тоже невозможен.
Почему не Hamiltonian:
- любой Hamiltonian cycle должен был бы пройти мост \((c,d)\) дважды (туда и обратно);
- в простом цикле каждое ребро используется не более одного раза в стандартной постановке Hamilton cycle;
- следовательно, Hamilton cycle не существует.
Ответ: dumbbell из двух треугольников с мостом — не Eulerian и не Hamiltonian.
4.10. Эйлеров, но не гамильтонов (Лаба 10, Задание 5b)
Постройте связный \(G_2\): Eulerian, но не Hamiltonian.
Показать решение
Конструкция:
Нужны все чётные степени, но структура, запрещающая Hamilton cycle.
- Черновик с \(K_{2,3}\): при неравных долях Hamilton cycle нет, но степени там не все чётные, поэтому это не подходит как «эйлеров» пример.
- Черновик: цикл длины 4 \(a\text{--}b\text{--}c\text{--}d\text{--}a\) с кратными рёбрами \(a\text{--}b\) и \(c\text{--}d\): степени \(a,b,c,d\) становятся 4 (чётные) ⇒ возможен Eulerian обход с учётом кратных рёбер, но Hamilton cycle в смысле простого цикла по вершинам может не совпадать с требуемой «простотой»; пример нужно подбирать аккуратно.
- «Самый простой» \(K_{2,2}\) (4-цикл) наоборот Hamiltonian.
Рабочая идея: модификации графа Petersen или цикл с хордами, дающими чётность степеней, но блокирующими Hamiltonicity.
Практический ответ: можно получить Eulerian граф с articulation points, где структура разреза мешает Hamilton cycle (например, два цикла, пересекающиеся в одной вершине, при подходящих степенях).
4.11. Гамильтонов, но не эйлеров (Лаба 10, Задание 5c)
Постройте связный \(G_3\): Hamiltonian, но не Eulerian.
Показать решение
Возьмите \(K_4\): Hamiltonian, но все степени 3 (нечётные) ⇒ нет Euler cycle; четыре нечётные вершины ⇒ нет и Euler path.
Ответ: \(K_4\) (и более общо \(K_n\) при чётном \(n\ge4\)).
4.12. И эйлеров, и гамильтонов, но циклы разные (Лаба 10, Задание 5d)
Постройте связный \(G_4\), который Eulerian и Hamiltonian, но Euler cycle и Hamilton cycle — разные (как наборы рёбер).
Показать решение
Конструкция:
- Возьмите цикл из 6 вершин и добавьте хорды, образующие «внутренний треугольник»;
- вершины: \(v_1,\ldots,v_6\);
- рёбра цикла: \((v_1,v_2),(v_2,v_3),(v_3,v_4),(v_4,v_5),(v_5,v_6),(v_6,v_1)\);
- хорды: \((v_1,v_3),(v_3,v_5),(v_5,v_1)\).
Проверка степеней:
- \(v_1\): соседи \(v_2,v_6,v_3,v_5\) ⇒ степень 4;
- \(v_2\): \(v_1,v_3\) ⇒ 2;
- \(v_3\): \(v_2,v_4,v_1,v_5\) ⇒ 4;
- \(v_4\): \(v_3,v_5\) ⇒ 2;
- \(v_5\): \(v_4,v_6,v_3,v_1\) ⇒ 4;
- \(v_6\): \(v_5,v_1\) ⇒ 2.
Все степени чётные ⇒ Eulerian.
Hamilton cycle: \(v_1\to v_2\to\cdots\to v_6\to v_1\) (внешний 6-цикл).
Euler cycle: должен использовать все 9 рёбер; один из вариантов обхода: \(v_1\to v_2\to v_3\to v_4\to v_5\to v_6\to v_1\to v_3\to v_5\to v_1\).
Циклы различны (Euler использует 9 рёбер, Hamilton — 6).
Ответ: шестиугольник с «вписанным» треугольником из хорд.
4.13. Гамильтонов, но не удовлетворяет теореме Оре (Лаба 10, Задание 6)
Постройте Hamiltonian граф, для которого не выполняются условия Ore’s theorem.
Показать решение
Суть: Ore’s theorem — достаточное условие, не необходимое.
Конструкция: цикл \(C_6\) на вершинах \(v_1,\ldots,v_6\) с рёбрами \((v_1,v_2),(v_2,v_3),(v_3,v_4),(v_4,v_5),(v_5,v_6),(v_6,v_1)\).
Hamiltonian: сам цикл — Hamilton cycle.
Проверка условия Оре: здесь \(n=6\), нужно \(\deg(u)+\deg(v)\ge6\) для любой пары несмежных вершин. У каждой вершины степень 2. Возьмём несмежные \(v_1\) и \(v_3\): \(2+2=4<6\).
Ответ: простой цикл \(C_n\) при \(n\ge6\) — Hamiltonian, но условие Ore может нарушаться.
4.14. Выполняет Оре, но не Дирак (Лаба 10, Задание 7)
Постройте граф, удовлетворяющий Ore, но не Dirac.
Показать решение
Суть: Dirac требует \(\deg(v)\ge n/2\) для всех вершин, Ore — лишь суммы степеней для несмежных пар.
Стратегия: сделать две «низкостепенные» вершины, но смежные между собой (чтобы они не входили в проверку Ore как пара несмежных), и обеспечить большие степени остальным.
Пример: \(n=6\), вершины \(\{v_1,\ldots,v_6\}\):
- \(v_1\) и \(v_2\) смежны и обе смежны только с \(v_3\);
- \(v_3,v_4,v_5,v_6\) образуют \(K_4\) на \(\{v_3,v_4,v_5,v_6\}\).
Степени:
- \(v_1,v_2\): по 2;
- \(v_3\): 5;
- \(v_4,v_5,v_6\): по 4.
Dirac: нужно \(\deg(v)\ge3\) для всех, но \(v_1,v_2\) имеют степень 2 ⇒ Dirac не выполнен.
Ore: проверяем несмежные пары, включающие \(v_1\) или \(v_2\) с \(v_4,v_5,v_6\); для них суммы степеней дают \(2+4=6\ge6\) и аналогично для остальных требуемых пар ⇒ условие Ore выполнено.
Ответ: указанный граф удовлетворяет Ore, но нарушает Dirac.
4.15. Пример Дейкстры (Лаба 10, Задание 8)
Примените Dijkstra’s algorithm от \(A\) до остальных вершин \(\{A,\ldots,F\}\) с рёбрами A–E (6), A–F (9), A–D (5), E–B (5), E–C (5), B–F (8), B–C (7), B–D (8), F–C (4), D–C (4).

Показать решение
Суть: Dijkstra’s algorithm поддерживает текущие оценки расстояний и каждый раз «фиксирует» ближайшую среди unvisited вершин.
Инициализация:
- \(d[A]=0\), остальные \(d[\cdot]=\infty\);
- все вершины unvisited.
Шаг 1: посещаем \(A\) (минимум = 0)
- релаксации соседей \(A\): \(d[D]=5\), \(d[E]=6\), \(d[F]=9\);
- помечаем \(A\) как visited.
Шаг 2: посещаем \(D\) (минимум = 5)
- из \(D\): \(d[C]=\min(\infty,5+4)=9\), \(d[B]=\min(\infty,5+8)=13\);
- \(D\) — visited.
Шаг 3: посещаем \(E\) (минимум = 6)
- из \(E\): \(d[B]=\min(13,6+5)=11\), \(d[C]=\min(9,6+5)=9\);
- \(E\) — visited.
Шаг 4: посещаем \(F\) (минимум = 9)
- из \(F\): улучшений нет для \(C\) и \(B\);
- \(F\) — visited.
Шаг 5: посещаем \(C\) (минимум = 9)
- из \(C\): \(d[B]\) не улучшается;
- \(C\) — visited.
Шаг 6: посещаем \(B\) (минимум = 11)
- соседей unvisited нет;
- \(B\) — visited.
Итоговые кратчайшие расстояния от \(A\):
- к \(A\): 0;
- к \(D\): 5 (путь \(A\to D\));
- к \(E\): 6 (\(A\to E\));
- к \(F\): 9 (\(A\to F\));
- к \(C\): 9 (\(A\to D\to C\));
- к \(B\): 11 (\(A\to E\to B\)).
Ответ: как в списке выше.
4.16. Две треугольника отдельно (Туториал 10, Задание 1)
Классифицируйте граф: (1) Eulerian, (2) есть Euler path, (3) ни то ни другое. Граф: два непересекающихся треугольника.
Показать решение
Суть: Euler path/cycle требуют connected графа.
Ответ: (3) — граф несвязен.
4.17. Звезда Давида (Туториал 10, Задание 2)
То же (1)–(3) для шестиконечной звезды (hexagram) с вершинами в пересечениях.
Показать решение
- Степени вершин: у типичной разметки hexagram на пересечениях степени чётные (часто 4 на «внутренних» узлах и 2 на внешних острых вершинах — в точности по рисунку).
- Связность: граф связен.
- Критерий Эйлера: все степени чётные ⇒ существует Euler cycle ⇒ граф Eulerian.
Ответ: (1).
4.18. Домик с вертикалью (Туториал 10, Задание 3)
То же (1)–(3) для «домика» с вертикалью от конька к середине основания.
Показать решение
Шесть вершин степени 3 ⇒ больше двух нечётных.
Ответ: (3).
4.19. Два ромба в одной точке (Туториал 10, Задание 4)
То же (1)–(3) для двух ромбов, склеенных одной вершиной.
Показать решение
Ровно две вершины нечётной степени ⇒ есть Euler path.
Ответ: (2).
4.20. Звезда: гамильтоновость (Туториал 10, Задание 5)
Классифицируйте по Hamiltonian / Hamilton path / ни то ни другое для hexagram.
Показать решение
Разбор: при достаточной связности можно построить Hamilton cycle, проходящий по всем вершинам один раз.
Пример цикла (как на стандартной маркировке вершин в задаче): \(a \to d \to e \to g \to k \to j \to l \to i \to h \to f \to b \to c \to a\).
Ответ: (1) Hamiltonian.
4.21. Домик: гамильтоновость (Туториал 10, Задание 6)
То же для «домика» с внутренними рёбрами.
Показать решение
Пример Hamilton cycle: \(a \to b \to c \to f \to d \to e \to a\).
Ответ: (1).
4.22. Два ромба: гамильтоновость (Туториал 10, Задание 7)
То же для двух ромбов в общей вершине \(d\).
Показать решение
Cut vertex \(d\) мешает циклу, но не обязательно пути.
Ответ: (2) есть Hamilton path, нет Hamilton cycle.
4.23. «Воздушный змей» (Туториал 10, Задание 8)
То же для формы «kite / teardrop».
Показать решение
Ответ: (1) Hamiltonian при указанной связности графа.
4.24. Эйлеров граф: чётное \(v\), нечётное \(|E|\) (Туториал 10, Задание 9)
Существует ли Eulerian граф с чётным числом вершин и нечётным числом рёбер?
Показать решение
Суть: сумма степеней \(=2|E|\); все степени чётные ⇒ сумма чётна — согласовано.
Пример: 6 вершин, 9 рёбер (шестиугольник + треугольник хорд).
Ответ: да.
4.25. Флёри от вершины 1 (Туториал 10, Задание 10)
Примените Fleury’s algorithm, стартуя из вершины 1.
Показать решение
На рисунке туториала задана конкретная схема рёбер; на каждом шаге выбирайте ребро, не являющееся bridge в оставшемся графе нетронутых рёбер, если это возможно. Тогда строится Euler cycle (конкретная последовательность вершин определяется рисунком).
Ответ: корректное применение правила даёт обход всех рёбер ровно один раз.
4.26. Дейкстра: только длина (Туториал 10, Пример 1)
Найдите длину shortest path от \(a\) до \(z\) для рёбер: a–b (4), a–c (2), b–c (1), b–d (5), c–d (8), c–e (10), d–e (2), d–z (6), e–z (3).
Показать решение
| Вершина | Расстояние | Помечена как посещённая |
|---|---|---|
| a | 0 | Нет |
| b | ∞ | Нет |
| c | ∞ | Нет |
| d | ∞ | Нет |
| e | ∞ | Нет |
| z | ∞ | Нет |
Шаг 1: посещаем \(a\) — обновляем \(d[b]=4\), \(d[c]=2\).
Шаг 2: посещаем \(c\) (минимум 2) — \(d[b]=\min(4,2+1)=3\), \(d[d]=10\), \(d[e]=12\).
Шаг 3: посещаем \(b\) (минимум 3) — \(d[d]=\min(10,3+5)=8\).
Шаг 4: посещаем \(d\) (минимум 8) — \(d[e]=\min(12,8+2)=10\), \(d[z]=14\).
Шаг 5: посещаем \(e\) (минимум 10) — \(d[z]=\min(14,10+3)=13\).
Шаг 6: посещаем \(z\) (минимум 13) — алгоритм завершён.
Ответ: кратчайшее расстояние от \(a\) до \(z\) равно 13.
4.27. Дейкстра: восстановление пути (Туториал 10, Пример 2)
Найдите сам shortest path от \(a\) до \(z\) для того же графа, что в примере 4.26.
Показать решение
Суть: параллельно с релаксациями храним predecessor для восстановления пути.
После шага «посещаем \(a\)»: у \(b\) предшественник \(a\), у \(c\) предшественник \(a\).
После шага «посещаем \(c\)»: у \(b\) предшественник обновляется на \(c\); у \(d\) и \(e\) — пока \(c\).
После шага «посещаем \(b\)»: у \(d\) предшественник становится \(b\).
После шага «посещаем \(d\)»: у \(e\) предшественник \(d\); у \(z\) пока \(d\).
После шага «посещаем \(e\)»: у \(z\) предшественник обновляется на \(e\).
Восстановление: из \(z\) идём к \(e\), затем к \(d\), к \(b\), к \(c\), к \(a\).
Путь: \(a \to c \to b \to d \to e \to z\).
Ответ: кратчайший путь указан выше, суммарный вес 13.